//5．修改程序清单13.5中的程序，用命令行界面代替交互式界面。
/* reverse.c -- displays a file in reverse order */
#include <stdio.h>
#include <stdlib.h>
#define CNTL_Z '\032'   /* eof marker in DOS text files */
#define SLEN 81

int main(int size, char **args) {
    if (size < 2) {
        fputs("no argv of file \n", stderr);
        return 0;
    }
    char ch;
    FILE *fp;
    long count, last;
    if ((fp = fopen(args[1], "rb")) == NULL) {                               /* read-only mode   */
        printf("reverse can't open %s\n", args[1]);
        exit(EXIT_FAILURE);
    }

    fseek(fp, 0L, SEEK_END);        /* go to end of file */
    last = ftell(fp);
    for (count = 1L; count <= last; count++) {
        fseek(fp, -count, SEEK_END); /* go backward      */
        ch = getc(fp);
        if (ch != CNTL_Z && ch != '\r')  /* MS-DOS files */
            putchar(ch);
    }
    putchar('\n');
    fclose(fp);

    return 0;
}
